<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 不使用promise情况下，如果实现一个计数器将输入的2个数字相加，
        在间隔1S后，将所得的的结果再进行下一次计算 。
        */
       //回调函数写法：
    //    function counter (x, y, wait, cb) {
    //         setTimeout(function () {
    //             cb(x + y)
    //         }, 1000)
    //    }
    //    //为了获取数据一直进行函数回调的嵌套造成回调地狱
    //    counter (1, 2, 1000, function (num) {
    //         console.log(num)
    //    })
    //    counter (1, 2, 1000, function (num) {
    //         console.log(num)
    //    })

    //使用promise写法
    // function counter (x, y, wait) {
    //    return new Promise(function (resolve, reject) {
    //         setTimeout(function () {
    //             resolve(x + y)
    //         }, 1000)
    //     })
    // }
    // counter(1, 2, 1000).then(val =>{
    //     console.log(val)
    //    return counter(val, 1, 1000)
    // }).then(num => {
    //     console.log(num)
    // })

    // Promise.resolve（）方法
    // Promise.resolve(2).then((val) => {
    //     console.log(val)
    // })

    // new Promise(function (resolve) {
    //     resolve(2)
    // })

    // Promise.reject()方法
    // Promise.reject ({message: '接口返回错误'}).catch((err) => {
    //     console.log(err)
    // })

    // Promise.all（）方法
    const promise1 = Promise.resolve(3); //返回一个状态为finally的对象 
    const promise2 = 42;   
    const promise3 = new Promise((resolve, reject) => {  //返回一个状态为finally的对象，对象里面有异步操作
        setTimeout(() => {
            resolve('hello')
        }, 1000);
    });
    const promise4 = new Promise((resolve, reject)=>{
        setTimeout(() => {
            resolve('world')
        }, 2000);
    });

    Promise.all([promise1, promise2, promise3, promise4]).then((value) => {
        console.log(value);
    });
    //打开控制台后等待2S才接收到结果


       

    </script>
</body>
</html>